package com.holyn.guofang.presenter.my;

import com.holyn.guofang.model.webhttp.wo.AddCardOrderWo;
import com.holyn.guofang.model.webhttp.wo.AttachedCardDictionaryWo;
import com.holyn.guofang.model.webhttp.wo.CardDictionaryWo;
import com.holyn.guofang.model.webhttp.wo.CardOrderDetailWo;
import com.holyn.guofang.model.webhttp.wo.CouponInfoWo;
import com.holyn.guofang.model.webhttp.wo.DeviceWo;
import com.holyn.guofang.model.webhttp.wo.LogItemWo;
import com.holyn.guofang.model.webhttp.wo.OrderItemWo;
import com.holyn.guofang.model.webhttp.wo.PaySignWo;
import com.holyn.guofang.model.webhttp.wo.StatusWo;
import com.holyn.guofang.model.webhttp.wo.UpdateInfoWo;
import com.holyn.guofang.model.webhttp.wo.UserCardListWo;
import com.holyn.guofang.model.webhttp.wo.UserInfoWo;
import com.holyn.guofang.presenter.AbstractBasePresenterImp;
import com.holyn.guofang.presenter.BaseView;

/**
 * Created by Holyn on 2017/8/9.
 */

public class MyContract {
    public static abstract class Presenter extends AbstractBasePresenterImp {

        public Presenter(BaseView baseView) {
            super(baseView);
        }

        public abstract void addRegisterInfoViewListener(MyContract.RegisterInfoView registerInfoView);
        public abstract void addSecondaryDeviceListView(MyContract.SecondaryDeviceListView secondaryDeviceListView);
        public abstract void addUpdateCheckMethodView(MyContract.UpdateCheckMethodView updateCheckMethodView);
        public abstract void addChangeDeviceView(MyContract.ChangeDeviceView changeDeviceView);
        public abstract void addUpdatePasswordView(MyContract.UpdatePasswordView updatePasswordView);
        public abstract void addCardManagerView(MyContract.CardManagerView cardManagerView);
        public abstract void addUpdateValidMethodView(MyContract.UpdateValidMethodView updateValidMethodView);
        public abstract void addRechargeView(MyContract.RechargeView rechargeView);
        public abstract void addOrderDetailView(MyContract.OrderDetailView orderDetailView);
        public abstract void addOrderListView(MyContract.OrderListView orderListView);
        public abstract void addUserLogListView(MyContract.UserLogListView userLogListView);

        public abstract void addHomeListenenr(MyContract.HomeListenenr homeListenenr);

        public abstract void postUserInfo(final int requestAction);

        public abstract void postUpdateUserInfo(final int requestAction
                , String name
                , String mobile
                , String email
                , String address
                , String country
                , String area
                , String contact
                , String contactTel
                , String contactMobile
                , String contactEmail
                , String checkMethod
                , String newCheckMethod
                , String unBindCode
                , String bindCode);

        public abstract void postUnBindCode(final int requestAction);

        public abstract void postBindCode(final int requestAction, String checkMethod, String equipmentCode);

        public abstract void postDeviceList(final int requestAction, int mainDevice);
        public abstract void postDeviceListB(final int requestAction);

        public abstract void postUpdateDeviceRemark(final int requestAction, Integer deviceID, String remark);
        public abstract void postUpdateDeviceRemarkB(final int requestAction, Integer deviceID, String remark);

        public abstract void postUpdateAuthorize(final int requestAction, int deviceID);
        public abstract void postUpdateAuthorizeB(final int requestAction, int deviceID);

        public abstract void postDeleteDevice(final int requestAction, int deviceID);

        public abstract void postUpdateAuthorizeStop(final int requestAction, int deviceID);

        public abstract void postMainDeviceCode(final int requestAction);
        public abstract void postUpdateMainDevice(final int requestAction, int deviceID, String validCode);
        public abstract void postUserCardList(final int requestAction, Integer activeState, Integer pageSize, Integer page);

        /**
         * 我的-修改密码
         */
        public abstract void postNewPasswordCode(final int requestAction);
        public abstract void postUpdatePassword(final int requestAction, String oldPassword, String newPassword, String validCode);

        /**
         * 我的-国方卡管理
         */
//        public abstract void postUserCardList(final int requestAction, Integer activeState, Integer pageSize, Integer page);
        public abstract void postActiveCard(final int requestAction, Integer cardID, String beginDate, Integer validMethod, String password);

        /**
         * 我的-国方卡管理-修改规则
         */
        public abstract void postValidMethodCode(final int requestAction);
        public abstract void postUpdateValidMethod(final int requestAction, Integer cardID, Integer validMethod, String validCode, String password);

        /**
         * 我的-国方购卡
         */
        public abstract void postListCardDictionary(final int requestAction, Integer currency, Integer pageSize, Integer page);
        public abstract void postListAttachedCardDictionary(final int requestAction, Integer parentID);
        public abstract void postCouponInfo(final int requestAction, Integer type, Integer cardCount);
        public abstract void postAddCardOrder(final int requestAction, Integer cardID, Integer attenedCardID, Integer attenedCardCount, Integer needCoupon, Integer payWay, String couponCardNum, Integer couponCardID, String remark);

        /**
         * 我的-国方购卡-订单详情
         */
        public abstract void postCardOrderDetail(final int requestAction, Integer id);
        public abstract void postDeleteOrder(final int requestAction, Integer id);
        public abstract void postUpdateOfflinePayStatus(final int requestAction, Integer id);
        public abstract void postUpdateOrderPayStatus(final int requestAction, Integer id);
        public abstract void postAlipaySign(final int requestAction, String content);


        /**
         * 我的-我的订单
         */
        public abstract void postOrderList(final int requestAction, String from, String to, Integer payStatus, Integer orderType, Integer pageSize, Integer page);

        /**
         * 我的-使用日志
         */
        public abstract void postUserLogList(final int requestAction, String from, String to, Integer pageSize, Integer page);

        /**
         * 我的-注销当前用户
         */
        public abstract void postLogout(final int requestAction);

        /**
         * 检查更新
         */
        public abstract void postPlatformUpdate(int requestAction);
    }

    public interface RegisterInfoView {
        void responseSuccess(Integer requestAction, UserInfoWo userInfoWo);
        void responseSuccess(Integer requestAction, StatusWo statusWo);
        void responseSuccess(Integer requestAction, DeviceWo deviceWo);
    }

    public interface SecondaryDeviceListView {
        void responseSuccess(Integer requestAction, StatusWo statusWo);
        void responseSuccess(Integer requestAction, DeviceWo deviceWo);
    }

    public interface UpdateCheckMethodView {
        void responseSuccess(Integer requestAction, StatusWo statusWo);
    }

    public interface ChangeDeviceView {
        void responseSuccess(Integer requestAction, DeviceWo deviceWo);
        void responseSuccess(Integer requestAction, StatusWo statusWo);
        void responseSuccess(Integer requestAction, UserInfoWo userInfoWo);
        void responseSuccess(final int requestAction, UserCardListWo userCardListWo);
    }

    public interface UpdatePasswordView {
        void responseSuccess(Integer requestAction, StatusWo statusWo);
    }

    public interface CardManagerView {
        void responseSuccess(final int requestAction, UserCardListWo userCardListWo);
        void responseSuccess(final int requestAction, StatusWo statusWo);
    }

    public interface UpdateValidMethodView{
        void responseSuccess(final int requestAction, StatusWo statusWo);
    }

    public interface RechargeView{
        void responseSuccess(final int requestAction, CardDictionaryWo cardDictionaryWo);
        void responseSuccess(final int requestAction, AttachedCardDictionaryWo attachedCardDictionaryWo);
        void responseSuccess(final int requestAction, CouponInfoWo couponInfoWo);
        void responseSuccess(final int requestAction, AddCardOrderWo addCardOrderWo);
    }

    public interface OrderDetailView{
        void responseSuccess(final int requestAction, CardOrderDetailWo cardOrderDetailWo);
        void responseSuccess(final int requestAction, StatusWo statusWo);
        void responseSuccess(final int requestAction, PaySignWo paySignWo);
    }

    public interface OrderListView{
        void responseSuccess(final int requestAction, OrderItemWo orderItemWo);
    }

    public interface UserLogListView{
        void responseSuccess(final int requestAction, LogItemWo logItemWo);
    }

    public interface HomeListenenr{
        void responseSuccess(final int requestAction, StatusWo statusWo);
        void responseSuccessGetUpdateInfoWo(Integer requestAction, UpdateInfoWo updateInfoWo);
    }
}
